import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
//import {
//  AntDesignVueResolver,
//  ElementPlusResolver,
//  VantResolver,
//} from 'unplugin-vue-components/resolvers'
// https://vitejs.dev/config/
export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:9009',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '/console')
      }
    },
    hmr: {
      overlay: false
    }
  },
  plugins: [
	  vue(),
	  Components({
	  	  // 相对路径，用于搜索组件的目录。
        dirs: ['src/components'],

        // 组件的有效文件扩展名。
        extensions: ['vue'],

        // 匹配文件名作为组件的Glob模式。
        // 当指定时，`dirs` 和 `extensions` 选项将被忽略。
        globs: ['src/components/*.{vue}'],

        // 是否搜索子目录。
        deep: true,

        // 自定义组件的解析器。
        resolvers: [
            AntDesignVueResolver({
              //  importStyle?: boolean | 'css' | 'less'
              importStyle: "less"
            })
          ],

        // 生成 `components.d.ts` 全局声明文件，
        // 也可以指定自定义文件名的路径。
        // 默认值：如果安装了 `typescript` 包，则为 `true`。
        dts: false,

        // 允许子目录作为组件的命名空间前缀。
        directoryAsNamespace: false,

        // 折叠相同前缀（对大小写敏感）的文件夹和组件，
        // 以防止在命名空间组件名称中出现重复。
        // 当 `directoryAsNamespace: true` 时有效。
        collapseSamePrefixes: false,

        // 忽略命名空间前缀的子目录路径。
        // 当 `directoryAsNamespace: true` 时有效。
        globalNamespaces: [],

        // 自动导入指令。
        // 默认值：对于Vue 3为 `true`，对于Vue 2为 `false`。
        // 针对Vue 2，为了性能考虑，默认情况下禁用了Babel转换。
        // 若要安装Babel，请运行：`npm install -D @babel/parser`
        directives: true,

        // 解析前转换路径。
        importPathTransform: v => v,

        // 允许组件覆盖具有相同名称的其他组件。
        allowOverrides: false,

        // 用于转换目标的过滤器。
        include: [/\.vue$/, /\.vue\?vue/],
        exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],

        // 项目的Vue版本。如果未指定，将自动检测。
        // 可接受的值：2 | 2.7 | 3
        version: 2.7,

        // 仅提供库中组件（全局注册）的类型。
        types: []
    })
  ]
})
